gusucode.com > 瑞格先锋网络新闻管理系统 1 > 瑞格先锋网络新闻管理系统 1.3/ReadygoNews/JScript/PopMenu.js
<!-- var menuOffX = 0 //菜单距连接文字最左端距离 var menuOffY = 18 //菜单距连接文字顶端距离 var fo_shadows = new Array() var linkset = new Array() ////No need to edit beyond here var menuIE4 = document.all&&navigator.userAgent.indexOf("Opera")==-1 var ie55up = IsIE55Up(); var menuNS6 = document.getElementById&&!document.all var menuNS4 = document.layers var overIframe = null; var jsdone = false; // 未执行其它js前不出菜单 function showmenu(e,index,p,paging) { if (!jsdone) return false; //p为当前页数,paging为当前是不是翻页 if (!document.all && !document.getElementById && !document.layers) return which = linkset[index] var pSize = 10 //每页连接数 var pNum = Math.floor((which.length - 1) / pSize) + 1 //页数 clearhidemenu() if (ie55up) ie_clearshadow() //设置菜单内容 if (pNum == 1) { which = which.join("") } else { which = which.slice((p - 1) * pSize, p * pSize ) which = which.join("") which += "<div class=\"menuitems\" >" if (p == 1) { which += " <font face=宋体 color=gray>←</font> " }else { which += " <font face=宋体 style=cursor:hand onclick=showmenu(event," + index + "," + (p - 1) + ",true) >←</font> " } if (p == pNum) { which += "<font face=宋体 color=gray>→</font>" }else { which += "<font face=宋体 style=cursor:hand onclick=showmenu(event," + index + "," + (p+1) + ",true) >→</font>" } which += "</div>" } menuobj = menuIE4? document.all.popmenu : menuNS6? document.getElementById("popmenu") : menuNS4? document.popmenu : "" menuobj.thestyle=(menuIE4||menuNS6)? menuobj.style : menuobj if (menuIE4 || menuNS6) menuobj.innerHTML = which else { menuobj.document.write("<layer name=\"gui\" bgColor=\"#E6E6E6\" width=\"165\" onmouseover=\"clearhidemenu()\" onmouseout=\"hidemenu()\">" + which + "</layer>") menuobj.document.close() } menuobj.contentwidth = (menuIE4 || menuNS6) ? menuobj.offsetWidth : menuobj.document.gui.document.width menuobj.contentheight = (menuIE4 || menuNS6) ? menuobj.offsetHeight : menuobj.document.gui.document.height eventX = menuIE4 ? event.clientX : menuNS6 ? e.clientX : e.x eventY = menuIE4 ? event.clientY : menuNS6 ? e.clientY : e.y var rightedge = menuIE4 ? document.body.clientWidth - eventX : window.innerWidth - eventX var bottomedge = menuIE4 ? document.body.clientHeight - eventY : window.innerHeight - eventY if (!paging) { if (rightedge < menuobj.contentwidth) menuobj.thestyle.left = menuIE4 ? document.body.scrollLeft + eventX - menuobj.contentwidth + menuOffX : menuNS6 ? window.pageXOffset + eventX - menuobj.contentwidth + menuOffX + "px" : eventX - menuobj.contentwidth else menuobj.thestyle.left = menuIE4? ie_x(event.srcElement) + menuOffX : menuNS6 ? window.pageXOffset + eventX + menuOffX + "px" : eventX if (bottomedge < menuobj.contentheight) menuobj.thestyle.top = menuIE4 ? document.body.scrollTop+eventY - menuobj.contentheight - event.offsetY + menuOffY : menuNS6 ? window.pageYOffset + eventY - menuobj.contentheight + menuOffY + "px" : eventY - menuobj.contentheight else menuobj.thestyle.top = menuIE4 ? ie_y(event.srcElement) + menuOffY : menuNS6 ? window.pageYOffset + eventY + menuOffY + "px" : eventY } menuobj.thestyle.visibility = "visible" if (ie55up) ie_dropshadow(menuobj,"#999999",3) DivOverSel(menuobj); return false } function ie_y(e) { var t = e.offsetTop; while(e = e.offsetParent) { t += e.offsetTop; } return t; } function ie_x(e) { var l = e.offsetLeft; while(e = e.offsetParent) { l += e.offsetLeft; } return l; } function ie_dropshadow(el, color, size) { var i; for (i = size; i > 0; i--) { var rect = document.createElement('div'); var rs = rect.style rs.position = 'absolute'; rs.left = (el.style.posLeft + i) + 'px'; rs.top = (el.style.posTop + i) + 'px'; rs.width = el.offsetWidth + 'px'; rs.height = el.offsetHeight + 'px'; rs.zIndex = el.style.zIndex - i; rs.backgroundColor = color; var opacity = 1 - i / (i + 1); rs.filter = 'alpha(opacity=' + (100 * opacity) + ')'; el.insertAdjacentElement('afterEnd', rect); fo_shadows[fo_shadows.length] = rect; } } function ie_clearshadow() { for(var i = 0; i < fo_shadows.length; i++) { if (fo_shadows[i]) fo_shadows[i].style.display = "none" } fo_shadows = new Array(); } function contains_menuNS6(a, b) { if (b) { while (b.parentNode) if ((b = b.parentNode) == a) return true; } return false; } function hidemenu() { if (window.menuobj) window.menuobj.thestyle.visibility = (menuIE4 || menuNS6) ? "hidden" : "hide" ie_clearshadow() DivOutSel(); } function dynamichide(e) { if (menuIE4&&!menuobj.contains(e.toElement)) hidemenu() else if (menuNS6 && e.currentTarget != e.relatedTarget && !contains_menuNS6(e.currentTarget, e.relatedTarget)) hidemenu() } function delayhidemenu() { if (menuIE4 || menuNS6 || menuNS4) delayhide = setTimeout("hidemenu()",500) } function clearhidemenu() { if (window.delayhide) clearTimeout(delayhide) } function highlightmenu(e,state) { if (document.all) source_el = event.srcElement else if (document.getElementById) source_el = e.target if (source_el.className == "menuitems") { source_el.id=(state == "on") ? "mouseoverstyle" : "" } else { while(source_el.id != "popmenu") { source_el = document.getElementById ? source_el.parentNode : source_el.parentElement if (source_el.className == "menuitems") { source_el.id = (state == "on") ? "mouseoverstyle" : "" } } } } function DivOverSel(obj) { // 只有IE5.5以上Iframe的z-index才有效 if (ie55up) { if (overIframe == null) { overIframe = document.createElement("<iframe src='about:blank' style='position:absolute;left:0;top:0;z-index:998;display:none' scrolling='no' frameborder='0'></iframe>"); } document.body.insertAdjacentElement("beforeEnd",overIframe); with(overIframe.style) { top = obj.style.top; left = obj.style.left; width = obj.offsetWidth; height = obj.offsetHeight; overIframe.style.visibility = 'visible'; display = 'block'; } obj.style.zIndex = "999"; } } function DivOutSel() { if (ie55up) { if (overIframe != null) { overIframe.style.visibility = 'hidden'; } } } // 是否IE5.5以上版本 function IsIE55Up () { var agt = navigator.userAgent.toLowerCase(); var isIE = (agt.indexOf("msie") != -1); if (isIE) { var stIEVer = agt.substring(agt.indexOf("msie ") + 5); var verIEFull = parseFloat(stIEVer); return verIEFull >= 5.5; } return false; } if (menuIE4 || menuNS6) document.onclick = hidemenu; // -->